﻿//
// GNS_CursorTextField.h
// TestPro
//
// Created by mr.l on 16/1/28.
//
//
#ifndef __GNS_CursorTextField_h
#define __GNS_CursorTextField_h
/*
 *输入框类
 */
#include "cocos2d.h"
USING_NS_CC;
using namespace std;

class GNS_CursorTextField : public TextFieldDelegate , public TextFieldTTF
{
public:
    GNS_CursorTextField();
    ~GNS_CursorTextField();
    // CCLayer
    void onEnter();
    void onExit();
    //初始化光标精灵
    void initCursorSprite(float fontSize);
    //得到TextField矩形
    Rect getRect();
    //判断虚拟键盘是否打开(关闭)
    bool isInTextField(Touch* pTouch);
    // static输入框接收函数
	static GNS_CursorTextField* textFieldWithPlaceHolder(const char *placeholder, const char *fontName, float fontSize);
    //CCTextFieldDelegate//当用户点开虚拟键盘的回调函数
    virtual bool onTextFieldAttachWithIME(TextFieldTTF * sender);
    //当用户关闭虚拟键盘的时候回调函数
    virtual bool onTextFieldDetachWithIME(TextFieldTTF * sender);
    //当用户进行输入,虚拟键盘的时候回调函数
    virtual bool onTextFieldInsertText(TextFieldTTF * sender, const char * text, size_t nLen);
    //当用户进行删除文字,虚拟键盘的时候回调函数
    virtual bool onTextFieldDeleteBackward(TextFieldTTF * sender, const char * delText, size_t nLen);
    //触摸事件 CCLayer Touch
    bool onTouchBegan(Touch *pTouch, Event *pEvent);
    void onTouchEnded(Touch *pTouch, Event *pEvent);
    //打开虚拟键盘
    void openIME();
    //关闭虚拟键盘
    void closeIME();
    /////wcz add///////////
    virtual void setPosition(const Point& pos);
    void setCursorPositionX(float x); // 设置光标x位置
    // 把光标添加到和输入框一起的层中
    void AddCursor(Node *node);
    //设置输入长度
    void setLimitNum(int limitNum);
    //是否开启密码输入
    void setPasswordEnabled(bool enable);
    //获取输入内容
    std::string & getInputString();
private:
    //点击开始位置
    Point m_beginPos;
    //光标精灵
    Sprite *m_pCursorSprite;
    //光标动画
    Action *m_pCursorAction;
    //动画坐标的位置
    Point m_cursorPos;
    //定义输入框最大字符个数
    unsigned int m_limitNum;
    //输入框内容
    std::string *m_pInputText;
    //密码显示
    std::string *passwordStyleText;
    //密码显示 bool
    bool passworldStyleBool;
    //光标高度
    int CursorSptHigth;
	//记录提示文字
	std::string m_tips;
};

#endif /*__GNS_CursorTextField_h*/